草庐IT

c++ - Swig -includeall 除了...

全部标签

c++ - 内存分配栈

在栈中,内存是为main保留的,我们称之为main函数的栈帧。当我们调用Add函数时,内存被保留在栈顶。Add函数栈帧中,a和b为局部指针,c为整数,计算和然后我们返回引用。c是Add函数的局部变量。现在当Add函数执行完成时,堆栈中的内存空间也被释放,所以当我们尝试使用指针访问main中的这个地址时p,我们试图访问的基本上是一个释放的空间。编译器给出了警告,但为什么它仍然正确打印值5?答案可能是机器没有释放内存空间,因为它认为没有必要,因为没有更多的功能。但是,如果我们编写另一个函数Hello那么它肯定会在调用堆栈中为Add函数释放空间,但程序仍会打印Yay5是不是因为像在堆中一样,

c++ - 内存分配使操作系统崩溃。除了操作系统,谁应该受到指责

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭7年前。Improvethisquestion这个简短的片段#includeintmain(){while(true){try{newchar[0x10000000];}catch(std::bad_allocbac){}}}当编译为64位应用程序并在64位Windows系统上运行时,显然会使整个操

c++ - 将字符串转换为函数

我正在尝试学习在程序中执行shellcode,但我什至无法运行最基本的代码。以下代码应该在运行时退出终端:#include#include#include#includecharexitcode[]="\xb0\x01\x31\xdb\xcd\x80";intmain(){int(*func)();func=(int(*)())exitcode;(int)(*func)();return0;}但我得到的只是一个段错误。GDB说当程序访问exitcode[at(int)(*func)();的内存位置时就会发生这种情况。],但我不确定为什么这会导致问题。我正在运行64位LinuxMint操

c++ - 在 C/C++ 中自动检测操作系统

有什么方法可以使用您的C/C++代码自动检测您的操作系统吗?我需要它来为Linux、Windows甚至在RaspberryPi上运行一些跨平台代码。我正在尝试自动检测操作系统,这样我就不会陷入必须请求机器上运行的操作系统作为输入的情况。我在考虑像验证文件系统结构之类的黑客攻击,我不知道我是否在做某事。 最佳答案 我过去使用下面的代码在linux和windows之间进行检查#includeintmain(intargc,char*argv[]){#ifdef_WIN32printf("inWindows");#endif#ifdefl

c++ - 数组的地址 VS 指针到指针 : Not the same?

我在处理指针时遇到了一个问题。到目前为止,我知道当我们创建任何数据类型的数组时,数组的名称实际上是一个指向数组第一个索引的指针(可能是静态指针)。对吗?所以我想要实现的是创建另一个指针,它可以保存数组名称的地址(即指向另一个指针的指针,在我的例子中是数组名称)例如:charname[]="ABCD";//nameholdingtheaddressofname[0]char*ptr1=name;//Whenthisispossiblechar**ptr2=&name;//Whynotthis.Itgivemeerrorthatcannotconvertchar(*)[5]tochar**

c++ - 反斜杠后是否允许空格以继续一行(在 C/C++ 中)

这个问题在这里已经有了答案:WhybothclangandgcconlygiveawarningwhenthereisaspaceafterbackslashifCstandardsaysthatwhitespaceisforbidden?(4个答案)关闭3年前。当使用\续行时,在反斜杠之后是否允许有空格(在同一行)?

c++ - 我如何查看 Linux .so 或 .a 对象并查看它们包含哪些函数?

链接器大概可以做到这一点,那么是否有一个命令行工具可以列出目标文件中的函数并告诉我函数的名称及其签名? 最佳答案 对于共享库,您必须使用:nm-D/path/to/libwhatever.so.没有-D,nm转储debug符号;-D指的是实际用于动态链接的动态符号。来自Ubuntu12session:$nm/lib/i386-linux-gnu/libc.so.6nm:/lib/i386-linux-gnu/libc.so.6:nosymbols$nm-D/lib/i386-linux-gnu/libc.so.6|tail0011f

c++ - 我应该使用 C 类型 (uint8_t/.../uint64_t) 还是 (u_int8_t/.../u_int64_t)?

我的GNU-Linux平台(debianstretch)有C类型u_int8_t、u_int16_t、u_int32_t和u_int64_t在文件sys/types.h中定义,同时uint8_t、uint16_t、uint32_t和uint64_t在stdint.h中定义。我发现这些类型在练习X86-64汇编语言和与C交互的过程中很有用。有什么理由让我更喜欢一个头文件而不是另一个(“最佳实践”、可移植性等)?C++的答案有什么不同吗? 最佳答案 stdint.h是标准C,它映射到标准C++中的cstdint。sys/types.h不

c++ - 你能从 C++ 调用 Ada 函数吗?

我是一个完全的Ada新手,虽然我在HS期间使用Pascal2-3年。IIRC,可以从C/C++调用Pascal编译函数。是否可以从C++调用用Ada编写的过程和函数? 最佳答案 根据这个oldtutorial,应该是可以的。然而,如图thisthread,您必须小心Ada函数的C++extern"C"定义。 关于c++-你能从C++调用Ada函数吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q

c++ - 枚举结构的成员?

有没有办法在C++或C中枚举结构(struct|class)的成员?我需要获取成员名称、类型和值。我之前在一个变量是全局范围的小项目中使用过以下示例代码。我现在遇到的问题是需要将一组值从GUI复制到对象、文件和VM环境。我可以创建另一个“穷人的”反射系统,或者希望创建一些我还没有想到的更好的东西。有没有人有什么想法?编辑:我知道C++没有反射。unionvariant_t{unsignedintui;inti;doubled;char*s;};structpub_values_t{constchar*name;unionvariant_t*addr;chartype;//'I'isin